[ECO-5294] Work around Xcode 16.3 compiler crashes#268
[ECO-5294] Work around Xcode 16.3 compiler crashes#268lawrence-forooghian merged 4 commits intomainfrom
Conversation
These are the internal changes; I need to also make one that affects public API but will do that in a separate commit. Part of #266.
With this change, the SDK now compiles in Xcode 16.3 without crashing the compiler. This is a breaking public API change but we're not at 1.x yet and also I hope that we can revert it soon, once the referenced compiler crash is fixed. If it turns out that the compiler crash isn't going to be fixed any time soon, then we might need to try and find a workaround that preserves the typed throws (I've already put a bit of time into trying to find one, but didn't succeed and thought it wasn't worth spending more time on yet). Resolves #267.
WalkthroughThe changes modify error handling in several modules. In Changes
Assessment against linked issues
Possibly related PRs
Suggested reviewers
Poem
🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
It tries to upload multiple artifacts with the same name, causing all but one of the coverage jobs to fail. There's no need to be doing it for multiple Xcode versions, anyway (the Xcode version doesn't affect the coverage information).
51a09ad to
31dd3fe
Compare
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (1)
.github/workflows/check.yaml (1)
142-142: Simplified Job Name for Code Coverage
The job name has been updated to a fixed string"Generate code coverage", removing the dynamic reference to the Xcode version. This simplifies the display, but please verify that you don't lose valuable version context in the build logs if that's needed.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro (Legacy)
📒 Files selected for processing (2)
.github/workflows/check.yaml(1 hunks)Sources/BuildTool/BuildTool.swift(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- Sources/BuildTool/BuildTool.swift
⏰ Context from checks skipped due to timeout of 90000ms (21)
- GitHub Check: Example app, tvOS (Xcode 16.3)
- GitHub Check: Example app, iOS (Xcode 16.3)
- GitHub Check: Example app, macOS (Xcode 16.3)
- GitHub Check: Xcode, tvOS (Xcode 16.3)
- GitHub Check: Xcode,
releaseconfiguration, tvOS (Xcode 16.3) - GitHub Check: Xcode, iOS (Xcode 16.3)
- GitHub Check: Example app, tvOS (Xcode 16.2)
- GitHub Check: Xcode, macOS (Xcode 16.3)
- GitHub Check: Xcode,
releaseconfiguration, iOS (Xcode 16.3) - GitHub Check: Example app, iOS (Xcode 16.2)
- GitHub Check: Example app, macOS (Xcode 16.2)
- GitHub Check: Xcode, tvOS (Xcode 16.2)
- GitHub Check: Xcode,
releaseconfiguration, macOS (Xcode 16.3) - GitHub Check: Xcode, iOS (Xcode 16.2)
- GitHub Check: Xcode,
releaseconfiguration, tvOS (Xcode 16.2) - GitHub Check: Xcode, macOS (Xcode 16.2)
- GitHub Check: Xcode,
releaseconfiguration, iOS (Xcode 16.2) - GitHub Check: Xcode,
releaseconfiguration, macOS (Xcode 16.2) - GitHub Check: SPM (Xcode 16.3)
- GitHub Check: SPM (Xcode 16.2)
- GitHub Check: Generate code coverage
🔇 Additional comments (2)
.github/workflows/check.yaml (2)
149-153: Fixed Xcode Version for Setup Step in Code Coverage
Themaxim-lobanov/setup-xcode@v1step now uses a hardcodedxcode-version: 16.2. This change enforces a consistent version for the code coverage job—which is important when working around Xcode 16.3 compiler crashes—but note that elsewhere (e.g., in BuildTool.swift) support for Xcode 16.3 has been introduced. Please confirm this deliberate choice so the workflow remains consistent with your overall strategy.
141-157: Independent Execution of the Code Coverage Job
The removal ofneedsandstrategyfields for thecode-coveragejob means it will run independently of the matrix-based build/test jobs. This simplifies the workflow configuration, but please verify that running code coverage separately (and not waiting on other jobs) aligns with the intended CI dependency chain.
Xcode 16.3 has a few compiler crashes relating to typed throws. Here I work around these crashes. We'll revisit these workarounds in #267.
Resolves #266.
Summary by CodeRabbit
Refactor
Chore
Bug Fixes